package com.dhz.common.utils;

import com.google.common.base.Charsets;
import org.apache.commons.lang3.StringUtils;

/**
 * 扩展的内部工具类 - 字符串处理工具
 *
 * @author FY
 */
public class StrExtUtils extends StringUtils {

    /**
     * 计算包含中的字符串字节长度；中文在UTF8编码下，每个中文占3个字节：10000*10000 - 耗时3
     * @param str 字符串
     * @return 长度
     */
    public static int lenCNByte(String str) {
        return str == null?0:str.getBytes(Charsets.UTF_8).length;
    }

    /**
     * 效率最高：10000*10000 - 耗时1
     * @param str 字符串
     * @return 长度
     */
    public static int lenCNAscii(String str) {
        if (str == null) return 0;
        int len = 0;
        for (int i=0; i<str.length(); ++i) {
            int ascii = Character.codePointAt(str, i);
            if (ascii >= 0 && ascii < 256) {
                len++;
            } else {
                len += 2;
            }
        }
        return len;
    }

}
